Adaptive audio guidance navigation

ABSTRACT

In a method for providing adaptive audio guidance, determining, by one or more processors, a route of a computing device, wherein the route is from an initial location of the computing device to a destination. Determining, by one or more processors, an estimated time of arrival at which the computing device would arrive at the destination. Prompting, by one or more processors, a user to input a desired arrival time. Determining, by one or more processors, whether to provide audio guidance based on a determination of whether the estimated time of arrival is within a pre-determined time period before the desired arrival time.

BACKGROUND OF THE INVENTION

The present invention relates generally to the field of navigationdevices, and more particularly to adaptive audio guidance for navigationdevices.

Global Positioning System (GPS) is a satellite-based navigation systemmade up of a network of satellites placed in orbit. GPS satellitescircle the Earth and continually transmit messages to Earth that includethe time the message was transmitted and the satellites position at thetime of the message transmission. A GPS receiver uses the messages itreceives from multiple satellites to determine the transit time of eachmessage to calculate the location of the GPS receiver.

A GPS navigation device, which contains a GPS receiver, is used by auser to navigate to a destination by providing directions to the desireddestination. GPS navigation devices can be in the form of portable,standalone commercial devices such as hand-held GPS units and automobileunits. GPS technology is increasingly integrated into other technologiessuch as cameras and cellular phones. GPS-enabled devices, such ascameras and cellular phones, typically use an assisted GPS, which usesdata from networks in conjunction with GPS satellites to provide alocation of and to the device. Cellular networks and internet networksare examples of networks that assisted GPS-enables devices use fornavigation. GPS navigation devices generally have pre-installed embeddedsoftware, which contain interactive maps such as street maps.

SUMMARY

Aspects of the present invention disclose a method for providingadaptive audio guidance. The method includes determining, by one or moreprocessors, a route of a computing device, wherein the route is from aninitial location of the computing device to a destination. The methodfurther includes determining, by one or more processors, an estimatedtime of arrival at which the computing device would arrive at thedestination. The method further includes prompting, by one or moreprocessors, a user to input a desired arrival time. The method furtherincludes determining, by one or more processors, whether to provideaudio guidance based on a determination of whether the estimated time ofarrival is within a pre-determined time period before the desiredarrival time.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts a functional block diagram illustrating a computingenvironment, in accordance with an embodiment of the present invention;

FIG. 2 depicts a flowchart of operational steps of a navigation programfor providing selective audio guidance to a user in accordance with anembodiment of the present invention;

FIG. 3 depicts a flowchart of operational steps of a navigation programfor providing selective audio guidance to a user in accordance withanother embodiment of the present invention;

FIG. 4 depicts a flowchart of operational steps of a navigation programfor providing selective audio guidance to a user in accordance with yetanother embodiment of the present invention;

FIG. 5 depicts a flowchart of operational steps of a navigation programfor providing selective audio guidance to a user in accordance with yetanother embodiment of the present invention;

FIG. 6 depicts an exemplary view of a basic map depicting an environmentin which the embodiment of FIG. 5 functions, in accordance with anembodiment of the present invention;

FIG. 7 depicts a flowchart of operational steps of a navigation programfor providing selective audio guidance to a user in accordance with yetanother embodiment of the present invention;

FIG. 8 depicts an exemplary view of a basic map depicting an environmentin which the embodiment of FIG. 7 functions, in accordance with anotherembodiment of the present invention; and

FIG. 9 is a block diagram of components of the computing device of FIG.1, in accordance with an embodiment of the present invention.

DETAILED DESCRIPTION

Embodiments of the present invention recognize that when a user uses anavigation device, such as a Global Positioning System (GPS) device, tonavigate to a destination, a user may not want audio guidance for theentire route. Embodiments of the present invention allow a user totravel a determined route with limited distractions for portions of theroute by muting audio guidance until audio guidance is desired.

The present invention will now be described in detail with reference tothe Figures.

FIG. 1 depicts a diagram of computing environment 10 in accordance withone embodiment of the present invention. FIG. 1 provides an illustrationof one embodiment and does not imply any limitations with regard to theenvironments in which different embodiments may be implemented. In thedepicted embodiment, computing environment 10 includes satellites 30 andclient computing device 20 in communication. Computing environment 10may include additional computing devices, servers, or other devices notshown.

Client computing device 20 may be a laptop computer, tablet computer,personal digital assistant (PDA), smart phone, handheld GPS device,automobile GPS device, or any device capable of receiving and processingGPS signals. In general, client computing device 20 may be anyelectronic device or computing system capable of executing computerreadable program instructions and communicating with satellites 30. Inone embodiment, client computing device 20 contains location applicationprogramming interface (API) 40, storage 50, navigation program 60, andaudio determination function 70. Client computing device 20 may includecomponents, as depicted and described in further detail with respect toFIG. 9.

In an embodiment, satellites 30 represent multiple satellites of aGlobal Positioning System that provide messages to GPS receivers. Themessages may include the position of satellites 30 and the timesatellites 30 transmitted their location. A GPS receiver (not shown)uses the messages provided by satellites 30 to determine the location ofclient computing device 20 by performing a calculation containing theposition of satellites 30 and the time satellites transmitted theirlocation. In another embodiment, satellites 30 represent multiplesatellites from an alternative satellite navigation system (e.g.GLONASS, Galileo, or BeiDou-2).

Location API 40 is an application programming interface that a programcan call to receive the location of client computing device 20. LocationAPI's are application programming interfaces that programs can use todetermine the location of a device. The location API receives thegeographic location of a device from a GPS receiver (not shown). A GPSreceiver is integrated into or connected to client computing device 20.A GPS receiver can determine the geographic location of client computingdevice 20 and present the geographic location of client computing device20 as longitude and latitude coordinates. In the depicted embodiment,location API 40 resides on client computing device 20.

In another embodiment, the geographic location of client computingdevice 20 is determined by a mobile operator and sent to clientcomputing device 20 to be made available by accessing location API's(e.g., location API 40). A mobile operator may be a cellular telephonecarrier if client computing device 20 is a device capable ofcommunicating with a cellular operator (e.g., a cellular phone or atablet). Cellular networks can determine the geographic location of adevice that can communicate with cellular networks by using radioresource location services protocol. Radio resource location servicesprotocol supports the positioning method, Enhanced Observed TimeDifference (E-OTD). E-OTD is based on measurements inside the cellulartelephone, where the phone measures the observed time difference ofarrival of burst sent by nearby pairs of base transceiver stations.

In another embodiment, the geographic location of client computingdevice 20 is determined by assisted GPS (A-GPS) and made available byaccessing location API's (e.g., location API 40). Data from networks, inconjunction with GPS satellites, provide the location of the clientcomputing device 20. Cellular networks and internet networks areexamples of networks that assisted GPS-enabled devices use fornavigation. A-GPS is mostly dependent on an internet service providerand/or a cellular network provider. A-GPS servers, deployed by A-GPSnetwork providers, download orbital information from satellites andstores the information in an A-GPS database. An A-GPS-enabled device canconnect to A-GPS servers and download information from the servers.

In an embodiment, storage 50 is a repository that may be written and/orread by navigation program 60. Storage 50 may store data that includes,but is not limited to, previously traveled routes, maps, userpreferences, and addresses. In one embodiment, storage 50 resides onclient computing device 20. In other embodiments, storage 50 may resideon another computing device, provided that storage 50 is accessible tonavigation program 60 over a network. The network may be a local areanetwork (LAN), a wide area network (WAN) such as the Internet, anycombination thereof, or any combination of connections and protocolsthat will support communications between client computing device 20 anda computing device hosting storage 50 in accordance with embodiments ofthe invention. The network may include wired, wireless, or fiber opticconnections.

Navigation program 60 executes on client computing device 20. In anembodiment, navigation program 60 provides a user interface (not shown)to input a destination as well as user preferences, such as providingsilent navigation (e.g., providing visual directions without providingaudio guidance) when audio guidance is not desired by a user. In oneembodiment, the user may be a pedestrian. In another embodiment, theuser may be a bicyclist. In other embodiments, the user may be atraveler using any method of travel. In another embodiment, navigationprogram 60 executes on another device, as long as navigation program 60has access to audio determination function 70, location API 40, andstorage 50.

Navigation program 60 also determines the initial location of clientcomputing device 20. In an embodiment, the initial location is thelocation of client computing device 20 when a user inputs a destination.In one embodiment, navigation program 60 calls location API 40 of clientcomputing device 20 in order to receive the location of client computingdevice 20.

In an embodiment, based on the initial location of client computingdevice 20, individual user preferences, and a cartographic database,navigation program 60 determines a route from the initial location tothe destination inputted into navigation program 60. Navigation program60 periodically calls location API 40 of client computing device 20 toreceive the location of client computing device 20 as the route istraveled and the destination is reached. A route, as determined bynavigation program 60, includes a series of coordinates from the initiallocation of client computing device 20 to the final destination anddirections for the user to follow as the user travels from the initiallocation to the destination, such as directions for roads to follow,turns to make, etc. In an embodiment, navigation program 60 stores thedetermined route in storage 50. In an embodiment, navigation program 60may provide visual directions when audio guidance is disabled.

Audio determination function 70 operates to determine whether audioguidance should be provided to a user at a particular time or geographiclocation. Audio determination function 70 can receive data from locationAPI 40, storage 50, and navigation program 60. In an embodiment, audiodetermination function 70 determines whether to provide the user withaudio guidance on the determined route by using data from location API40 and storage 50. The data may include routes the user previouslytraveled. The data may be generated by location API 40, navigationprogram 60, and/or the user.

In an embodiment, audio determination function 70 disables audioguidance for portions of the determined route that the user previouslytraveled. In an embodiment, audio determination function 70 recognizeslocations that are familiar to a user. The familiar locations canencompass surrounding areas within a particular radius. In anotherembodiment, a user inputs familiar locations to audio determinationfunction 70. In an embodiment, audio determination function 70 disablesaudio guidance for a specified radius surrounding the previouslytraveled route.

In other embodiments, audio determination function 70 disables audioguidance for a distance or number of turns specified by the user. Inother embodiments, audio determination function 70 disables audioguidance if the user is traveling in the direction of the destination.In one embodiment, audio determination function 70 prompts the user toselect locations on a determined route that the user does not desireaudio guidance while navigating to the destination. The locations areidentified by waypoints (positions based on geographic coordinatevalues, such as latitude/longitude). In another embodiment, audiodetermination function 70 calculates an estimated time of arrival to adetermined destination and monitors the location of client computingdevice 20 to send the user alerts if the user will be late to thedetermined destination. In one embodiment, audio determination function70 resides on client computing device 20. In other embodiments, audiodetermination function 70 resides on another server or another computingdevice, provided that audio determination function 70 is able tocommunicate with navigation program 60, location API 40, and storage 50.

FIG. 2 is a flowchart depicting operational steps 200 of navigationprogram 60 executing within the computing environment of FIG. 1, inaccordance with an embodiment of the present invention. Navigationprogram 60, via audio determination function 70, operates to disableaudio guidance in areas familiar to a user. In this embodiment, based onprior driving patterns of the user, navigation program 60 selectivelyprovides audio guidance for portions of the determined route. In oneembodiment, the steps of the workflow are performed by navigationprogram 60 utilizing audio determination function 70. Alternatively,steps of the workflow can be performed by another program that isworking with navigation program 60. Alternatively, steps of the workflowcan be performed solely by audio determination function 70.

In one embodiment, initially, a user of client computing device 20activates navigation program 60. In one embodiment, navigation program60 is activated by the user powering on client computing device 20. Inanother embodiment, navigation program 60 is activated by the useropening navigation program 60 on client computing device 20 via a userinterface (not shown).

In one embodiment, upon activation, navigation program 60 determines theinitial location of client computing device 20 by calling API 40 toreceive the location of client computing device 20.

In step 220, navigation program 60 determines a route from the initiallocation of client computing device 20 to a destination. In oneembodiment, navigation program 60 receives an address from the user thatthe user wants navigation program 60 to locate and determine anavigational route to. Navigation program 60 determines the route byusing algorithms and waypoints stored in storage 50. For example, theuser is in Albany, N.Y. and inputs an address that is located inSyracuse, N.Y. Navigation program 60 determines a navigation route fromthe initial location of client computing device 20 in Albany, N.Y. tothe inputted address that is located in Syracuse, N.Y.

In determination step 230, audio determination function 70 determines ifthe user previously traveled any portion of the determined route. In anembodiment, audio determination function 70 determines if the user haspreviously traveled any portion of the determined route by comparing thedetermined route to locations that the user has previously traveled. Forexample, navigation program 60 can use a track log (not shown) to recordthe locations a user has traveled and stores the locations in storage50. Audio determination function 70 compares the determined route to thelocations stored in storage 50 to determine if any locations in storage50 are on the determined route. In another embodiment, audiodetermination function 70 determines previously traveled routes based onuser input. For example, the user inputs locations the user has traveledthat were not previously stored in storage 50. In yet anotherembodiment, audio determination function 70 determines the userpreviously traveled a portion of the determined route based on whetherthe user is familiar with certain locations.

In an embodiment, audio determination function 70 receives input fromthe user for the portion(s) of the determined route that the user doesnot want audio determination function 70 to provide audio guidance. Inanother embodiment, audio determination function 70 determines that aportion of the route is familiar to the user based on the number oftimes that the user has previously traveled through waypoints on or nearthe determined route that exceeds a threshold. For example, audiodetermination function 70 determines that a user is familiar with aportion of the determined route based on the number of times the userpreviously travelled that portion of the route by a number of times thatexceeds a set threshold. The threshold may be a default setting, asetting based on algorithms, a setting set by a user, or a combination.

In yet another embodiment, audio determination function 70 determinesthat a portion of the determined route or all of the determined route isfamiliar to the user based on the proximity of the waypoint(s) on thedetermined route compared to the waypoints the user previously traveledthat are stored in storage 50 or waypoints that the user inputted asfamiliar or previously traveled. In an embodiment, a waypoint on thedetermined route is familiar to the user if the proximity of thewaypoint is within a determined radius of previously traveled orinputted waypoints. For example, navigation program 60 determines aroute for a user. Audio determination function 70 determines that aportion of the determined route is familiar to the user since thatportion of the determined route is located within a mile radius ofwaypoints that the user traveled a number of times that exceeds athreshold. In an embodiment, the threshold is a default setting. Inanother embodiment, the threshold is determined by the user. In otherembodiments, the threshold is determined by a computer algorithm. In anembodiment, the length of the familiar radius is a default setting. Inanother embodiment, audio determination function 70 receives input froma user indicating the length of the familiar radius. In an embodiment,the familiar radius is from a designated location (e.g., a user's houseor place of employment or any other destination the user frequentlytravels to). For example, audio determination function 70 receives inputfrom the user that waypoints within a five mile radius of the user'shome are familiar areas to the user. In another embodiment, the familiarradius is from waypoints the user has previously traveled or inputted asfamiliar. For example, audio determination function 70 determineswaypoints within a two mile radius of previously traveled waypoints arefamiliar.

In an embodiment, audio determination function 70 does not provide audioguidance if the user is within a determined distance from waypoints onthe determined route. For example, audio determination function 70receives input from a user to mute audio guidance within a mile of thedetermined route. Audio determination function 70 does not provide audioguidance to the user if client computing device 20 deviates from thedetermined route provided that client computing device 20 remains withina mile of the determined route at any point along the route, from theinitial starting point to the destination.

If audio determination function 70 determines the user has previouslytraveled a portion of the determined route, processing proceeds down the“Yes” branch to step 250.

If audio determination function 70 determines the user has notpreviously traveled a portion of the determined route, processingproceeds down the “No” branch to step 240. In step 240, navigationprogram 60 provides audio guidance for the entire determined route. Inone embodiment, audio determination function 70 causes navigationprogram 60 to provide audio guidance from the initial location of clientcomputing device 20 to the destination of the determined route.Processing ends when the client computing device 20 reaches thedestination of the determined route.

In step 250, audio determination function 70 determines where on thedetermined route to provide audio guidance. In an embodiment, audiodetermination function 70 determines that audio guidance will beprovided for portions of the determined route the user has notpreviously traveled.

In determination step 260, audio determination function 70 determineswhether client computing device 20 has reached a portion of thedetermined route where audio guidance will be provided. In anembodiment, audio determination function 70 determines whether clientcomputing device 20 has reached the portion of the determined routewhere audio guidance will be provided by analyzing the data thatnavigation program 60 periodically collects from calling location API 40of client computing device 20. The data contains information such as thegeographic location of client computing device 20 at a moment in time.The data can be stored in storage 50.

For example, audio determination function 70 determined audio guidanceshould be provided at the middle of the determined route. Audiodetermination function 70 determines that client computing device 20 isat a waypoint that is at the first quarter of the determined route.Since client computing device 20 has not reached the middle of theroute, audio determination function 70 determines that client computingdevice 20 has not reached a portion of the determined route where audioguidance will be provided. As client computing device 20 travels towardthe desired destination, navigation program 60 periodically callslocation API 40 to calculate and determine client computing device 20'sgeographic location at the time navigation program 60 called locationAPI 40. Navigation program 60 knows the location of client computingdevice 20 at any given time by calling location API 40. Based on thelocation of client computing device 20, audio determination function 70determines if client computing device 20 has reached a particularlocation on the determined route.

If audio determination function 70 determines a user has not reached aportion of the determined route that audio determination function 70determined audio guidance would be provided, processing proceeds downthe “No” branch back to determination step 260.

If audio determination function 70 determines client computing device 20has reached a portion of the determined route that audio determinationfunction 70 has determined audio guidance would be provided, processingproceeds down the “Yes” branch to step 270. In step 270, audiodetermination function 70 causes navigation program 60 to provide audioguidance for the portion of the determined route audio determinationfunction 70 determined audio guidance should be provided for. Forexample, the user wants audio guidance to begin at the middle of thenavigation route. Audio determination function 70 determines that clientcomputing device 20 has reached the middle of the determined route.Audio determination function 70 causes navigation program 60 to provideaudio guidance for the user while traveling on the portion of thedetermined route. Processing ends when client computing device 20arrives at the desired destination of the determined route. In anotherembodiment, if client computing device 20 leaves the portion of thedetermined route that audio determination function 70 has determinedaudio guidance would be provided before reaching the destination, audioguidance is disabled.

FIG. 3 is a flowchart depicting operational steps 300 of navigationprogram 60 executing within the computing environment of FIG. 1, inaccordance with another embodiment of the present invention. Navigationprogram 60, via audio determination function 70, operates to selectivelydisable audio guidance for portions of the determined route based oninput navigational program 60 receives from a user. In this embodiment,based on input from the user, navigation program 60 selectively providesaudio guidance for portions of the determined route. In an embodiment,the steps of the workflow are performed by navigation program 60utilizing audio determination function 70. Alternatively, steps of theworkflow can be performed by another program that is working withnavigation program 60. Alternatively, steps of the workflow can beperformed solely by audio determination function 70.

In an embodiment, initially, a user of client computing device 20activates navigation program 60. In one embodiment, navigation program60 is activated by the user powering on client computing device 20. Inanother embodiment, navigation program 60 is activated by the useropening navigation program 60 on client computing device 20 via a userinterface (not shown).

In an embodiment, upon activation, navigation program 60 determines theinitial location of client computing device 20 by calling API 40 toreceive the location of client computing device 20.

In step 320, navigation program 60 determines a route from the initiallocation of client computing device 20 to a destination. In anembodiment, navigation program 60 receives an address from the user thatthe user wants navigation program 60 to locate and determine anavigational route for. Navigation program 60 determines the route byusing algorithms and waypoints stored in storage 50. For example, theuser is in Albany, N.Y. and inputs an address that is located inSyracuse, N.Y. Navigation program 60 determines a navigation route fromclient computing device 20's initial location in Albany, N.Y. to theinputted address that is located in Syracuse, N.Y.

In step 330, audio determination function 70 prompts the user to selecta portion of the determined route the user wants navigation program 60to provide audio guidance. In an embodiment, audio determinationfunction 70 causes navigation program 60 to display a prompt on thescreen of client computing device 20. In an embodiment, the prompt onthe screen is a menu of options that the user selects from. For example,navigation program 60 prompts the user with a visual display integratedwith a touchscreen interface that receives input from the user. Inanother embodiment, navigation program 60 gives the user an audible(voice) prompt. In other embodiments, navigation program 60 prompts theuser with a combination of visual and audible prompts.

In step 340, audio determination function 70 receives input from theuser. In an embodiment, audio determination function 70 receives inputfrom the user to provide audio guidance for a measured distance or for anumber of turns or steps on the determined route. The turns on thedetermined route include left hand and right hand turns. The steps ofthe determined route are the individual directions along the determinedroute. For example, step one instructs the user to go straight for ahalf of a mile. The second step instructs the user to makes a right handturn at the intersection at the end of the half of a mile from step one.In an embodiment, audio determination function 70 provides audioguidance for any portion(s) of the determined route selected by theuser.

In an example, navigation program 60 determines a route that is twentymiles long with ten steps. Audio determination function 70 receivesinput from the user to provide audio guidance for a measured distance offive miles, beginning at the sixth mile of the determined route andending at the eleventh mile of the determined route. Input from the usercan be in the form of a voice (audible) command, a touchscreen input, ora combination of a voice (audible) command and touchscreen input. Inanother example, audio determination function 70 receives input from theuser to provide audio guidance, starting at the initial location of adetermined route, for the first ten miles of the determined route thatis twenty miles in length. In yet another example, audio determinationfunction 70 receives input from the user to provide audio guidance forthe last five miles of a determined route that is twelve miles inlength. In yet another example, audio determination function 70 receivesinput from the user to provide audio guidance when client computingdevice 20 reaches the quarter point of the determined route and to stopproviding audio guidance when client computing device 20 reaches thehalfway point of the determined route.

In alternative embodiments, audio determination function 70 receivesinput from the user to provide intermittent audio guidance to the user.For example, navigation program 60 determines a route that is twentymiles long. Audio determination function 70 receives inputs from theuser to provide intermittent audio guidance for multiple portions of thedetermined route selected by the user. Audio determination function 70receives input from the user to provide audio guidance at the followingportions of the determined route: mile two to mile four, mile five tomile eight, and mile sixteen to mile nineteen.

In an embodiment, audio determination function 70 receives input fromthe user to provide audio guidance for a specified number of turns orsteps on a determined route. For example, audio determination function70 receives input from the user to provide audio guidance for the firstfive turns of a determined route that consists of fifteen turns. Inanother example, audio determination function 70 receives input from theuser to provide audio guidance for the last ten steps of the determinedroute that consists of eighteen steps.

In other embodiments, audio determination function 70 receives inputfrom the user to provide audio guidance for any combination of turns,steps, and/or measured distance of the determined route. For example,navigation program 60 determines a route that is ten miles long and haseight turns. Audio determination function 70 receives input from theuser to provide audio guidance for the first five turns of thedetermined route and for the last four miles of the determined route.

In determination step 350, audio determination function 70 determineswhether client computing device 20 has reached the portion of thedetermined route where the user wants audio guidance provided. In anembodiment, audio determination function 70 determines whether clientcomputing device 20 has reached the portion of the determined routewhere the user wants audio guidance provided by analyzing the datanavigation program 60 periodically collects from calling location API 40of client computing device 20. The data includes information, such asthe geographic location of client computing device 20 at a moment intime. In some embodiments, the data is stored in storage 50. Forexample, as client computing device 20 travels toward the desireddestination, navigation program 60 periodically calls location API 40 tocalculate and determine the geographic location of client computingdevice 20 at the time navigation program 60 called location API 40.Navigation program 60 knows the location of client computing device 20at any given time by calling location API 40. Based on the location ofclient computing device 20, audio determination function 70 candetermine if client computing device 20 has reached a particularlocation on the determined route.

If audio determination function 70 determines client computing device 20has not reached the portion of the determined route where the user wantsaudio guidance provided, processing proceeds down the “No” branch backto determination step 350. The process continues until client computingdevice 20 reaches the portion of the determined route where the userwants audio guidance provided.

If audio determination function 70 determines client computing device 20has reached the portion of the determined route where the user wantsaudio guidance provided, processing proceeds down the “Yes” branch tostep 360. In step 360, audio determination function 70 provides audioguidance. In an embodiment, audio determination function 70 causesnavigation program 60 to provide audio guidance. For example, audiodetermination function 70 receives input from the user to provide audioguidance ten miles before the client computing device 20 reaches thedesired destination. Navigation program 60 periodically calls locationAPI 40 to determine where on the determined route client computingdevice 20 is located. When audio determination function 70 determinesclient computing device 20 is ten miles from the desired destination,audio determination function 70 causes navigation program 60 to provideaudio guidance. Processing ends when the user arrives at the destinationof the determined route. In another embodiment, if client computingdevice 20 leaves the portion of the determined route that audiodetermination function 70 has determined audio guidance would beprovided before reaching the destination, audio guidance is disabled.

FIG. 4 is a flowchart depicting operational steps 400 of navigationprogram 60 executing within the computing environment of FIG. 1, inaccordance with yet another embodiment of the present invention.Navigation program 60, via audio determination function 70, operates toselectively provide audio guidance for a determined route. In anembodiment, audio determination function 70 receives input from a userindicating the latest time the user desires to arrive at an inputteddestination. Audio determination function 70 will not provide the userwith audio guidance if the user deviates from the determined routeprovided the estimated time of arrival for the user is not within aselected timeframe before the inputted arrival time or a selectedtimeframe after the inputted arrival time. In an embodiment, the stepsof the workflow are performed by navigation program 60 utilizing audiodetermination function 70. Alternatively, steps of the workflow can beperformed by another program that is working with navigation program 60.Alternatively, steps of the workflow can be performed solely by audiodetermination function 70.

In an embodiment, initially, a user of client computing device 20activates navigation program 60. In an embodiment, navigation program 60is activated by the user powering on client computing device 20. Inanother embodiment, navigation program 60 is activated by the useropening navigation program 60 on client computer device 20 via a userinterface (not shown).

In an embodiment, upon activation, navigation program 60 determines theinitial location of client computing device 20 by calling API 40 toreceive the location of client computing device 20.

In step 420, navigation program 60 determines a route from the initiallocation of client computing device 20 to the destination. In anembodiment, navigation program 60 receives an address from the user thatthe user wants navigation program 60 to locate and determine anavigational route for. Navigation program 60 determines the route byusing algorithms and waypoints stored in storage 50. For example, theuser lives in Albany, N.Y. and inputs an address that is located inSyracuse, N.Y. Navigation program 60 determines a navigation route fromthe initial location of client computing device 20 in Albany, N.Y. tothe inputted address that is located in Syracuse, N.Y.

In step 430, navigation program 60 determines an estimated time ofarrival and prompts the user to select a desired time of arrival. In anembodiment, navigation program 60 determines an estimated time ofarrival from the initial location of client computing device 20 to theinputted destination and prompts the user to select a time that the userdesires to arrive at the inputted destination no later than. In anembodiment, navigation program 60 determines an estimated time ofarrival by taking into account information such as, but not limited to,cartographic data and the velocity client computing device 20 istraveling.

In an embodiment, audio determination function 70 prompts the user toselect a time the user desires to arrive at the inputted destination nolater than. In the same embodiment, audio determination function 70 alsoprompts the user to input how long before the inputted arrival time theuser wants audio determination function 70 to provide the user withaudio guidance.

For example, a user inputs a destination. Navigation program 60determines a route and an estimated time of arrival to the destination.The estimated time of arrival from the initial location of clientcomputing device 20 to the inputted destination is one hour. The userinputs that the user wants to arrive at the destination no later thanfive o'clock in the evening. The user begins traveling with clientcomputing device 20 along the determined route to the inputteddestination at one o'clock in the afternoon. The user plans to makestops and take detours while en route to the inputted destination. Audiodetermination function 70 receives input from the user for audiodetermination function 70 to alert the user with audio guidance when,based on the location of client computing device 20 and the estimatedtime of arrival of client computing device 20 from the location ofclient computing device 20 to the inputted destination, client computingdevice 20 will arrive at the destination thirty minutes before thedesired time of arrival, five o'clock in the evening, or after, ifclient computing device 20 travels directly from the current location ofclient computing device 20, at the time of the alert, to the inputteddestination without further stops or detours.

In step 440, navigation program 60 monitors the location of clientcomputing device 20. In an embodiment, navigation program 60 monitorsthe location of client computing device 20 using geographic coordinatevalues, such as latitude/longitude. Navigation program 60 usesgeographic data and algorithms to estimate the time of arrival based onthe current geographic location of client computing device 20 comparedto the inputted destination.

In determination step 450, audio determination function 70 determineswhether to provide the user with audio guidance. In an embodiment, audiodetermination function 70 determines whether to provide the user withaudio guidance. In an embodiment, as client computing device 20 travelstoward the inputted destination, audio determination function 70 usesthe data that navigation program 60 collects periodically by callinglocation API 40 of client computing device 20 to determine thegeographic location of client computing device 20 at the time navigationprogram 60 called location API 40. The data includes information suchas, but not limited to, the geographic location of client computingdevice 20 at a moment in time. The data may be stored in storage 50.Based on the location of client computing device 20, the time the userdesires to arrive at the destination and/or receive audio guidance, thecurrent time, and the estimated time of arrival from current location ofclient computing device 20, audio determination function 70 determineswhether to provide the user with audio guidance.

In an embodiment, audio guidance is a way to alert the user that theuser needs to travel directly to the destination if the user wants toarrive at the inputted destination by the inputted time. In anotherembodiment, audio guidance is given to the user to make the user awareof how much time the user has to arrive at the inputted destination. Forexample, audio determination function 70 provides the user audioguidance. The user has an additional thirty minutes to spare to arriveat the inputted destination by the inputted time from the currentlocation of client computing device 20. The user determines to make onemore stop that will take ten minutes. Afterward, the user and clientcomputing device 20 travel directly to the inputted destination.

For example, a user inputs a destination. Navigation program 60determines a route and an estimated time of arrival to the destination.The estimated time of arrival from the initial location of clientcomputing device 20 to the inputted destination is one hour. The user isfamiliar with the determined route and does not need audio guidance.However, the user plans to make stops and take detours while en route tothe inputted destination. To ensure that the user does not arrive at thedestination late, audio determination function 70 receives input fromthe user that the user wants to arrive at the destination no later thanfive o'clock in the evening. Audio determination function 70 receivesinput from the user for audio determination function 70 to provide audioguidance to the user when, based on the location of client computingdevice 20 and the estimated time of arrival of client computing device20 from the location of client computing device 20 to the inputteddestination, client computing device 20 will arrive at the destinationthirty minutes before the desired time of arrival, five o'clock in theevening, or after, if client computing device 20 travels directly fromthe current location of client computing device 20 at the time audioguidance is provided to the user to the time it would take for clientcomputing device 20 to reach the inputted destination without furtherstops or detours. The user begins traveling with client computing device20 along the determined route to the inputted destination at one o'clockin the afternoon. At four o'clock in the afternoon, client computingdevice 20 is 30 minutes away from the inputted destination based on thecurrent location of client computing device 20 and the estimated time ofarrival to the inputted destination. Audio determination function 70determines to provide the user with audio guidance. The user is nowaware of how much time the user has to arrive at the inputteddestination. Based on the remaining time, the user decides to take a tenminute detour before traveling directly to the inputted destination.

If audio determination function 70 determines not to provide the userwith audio guidance, processing proceeds down the “No” branch back todetermination step 450. In an embodiment, the process continues untilaudio determination function 70 determines to provide the user withaudio guidance or client computing device 20 reaches the destination.

If audio determination function 70 determines to provide the user withaudio guidance, processing proceeds down the “Yes” branch to step 460.In step 460, audio determination function 70 provides the user withaudio guidance. In an embodiment, when audio guidance is provided, audiodetermination function 70 informs the user of the estimated time ofarrival that client computing device 20 will arrive at the inputteddestination based on the current geographic location of client computingdevice 20. In an embodiment, audio guidance is provided in conjunctionwith visual guidance (shown on the screen of client computing device20). In some embodiments, the visual guidance is in the form of aheads-up (or head-up) display (HUD) or other technology that displays avisualization for the user. In an embodiment, audio determinationfunction 70 provides the user with audio guidance until client computingdevice 20 is on the determined route, traveling directly to the inputteddestination. In other embodiments, audio determination function 70provides the user with audio guidance intermittently or in set timeintervals. The intervals can be a default setting or pre-selected by theuser or based on an algorithm. In some embodiments, after audiodetermination function 70 initially determines to provide audioguidance, audio determination function 70 provides audio guidance anytime client computing device 20 travels off of the determined route. Inan embodiment, after audio determination function 70 initiallydetermines to provide audio guidance, audio guidance is provided for theduration of the trip.

For example, navigation program 60 determines that the inputteddestination is located an hour from the current location of clientcomputing device 20. The user desires to arrive at the inputteddestination no later than five o'clock in the evening. Audiodetermination function 70 receives input from the user to provide theuser with audio guidance when client computing device 20 will arrive atthe inputted destination a half an hour before five o'clock in theevening, based on the estimated time of arrival from the location ofclient computing device 20. Audio determination function 70 alsoreceives input from the user to provide the user with audio guidanceevery five minutes once audio determination function 70 determines toprovide the user with audio guidance. The user begins to travel withclient computing device 20 at one o'clock in the afternoon. When audiodetermination function 70 determines client computing device 20 willarrive at the inputted destination a half an hour before five o'clock inthe evening, based on the estimated time of arrival from the currentlocation of client computing device 20, audio determination function 70provides the user with audio guidance so that the user is aware thatclient computing device 20 will arrive at the destination a half an hourbefore five o'clock based on the current location of client computingdevice 20 and the estimated time of arrival from the location of clientcomputing device 20. The user decides to make one more stop that takesfive minutes. Audio determination function 70 provides the user withaudio guidance five minutes after audio determination function 70determined to provide the user with audio guidance. Afterward, the usertravels directly to the destination without further detours. Audiodetermination function 70 no longer provides the user audio guidance infive minute intervals once client computing device 20 begins travelingdirectly to the inputted destination. If the user makes another detouror stop, audio determination function 70 provides the user with audioguidance again. Processing ends when client computing device 20 reachesthe inputted destination.

FIG. 5 is a flowchart depicting operational steps 500 of navigationprogram 60 executing within the computing environment of FIG. 1, inaccordance with yet another embodiment of the present invention.Navigation program 60 operates to selectively provide audio guidance toa user based on whether the location of client computing device 20 iswithin an inputted degree range of a central line established from theprevious location of client computing device 20 relative to thedestination. In an embodiment, the steps of the workflow are performedby navigation program 60 utilizing audio determination function 70.Alternatively, steps of the workflow can be performed by another programthat is working with navigation program 60. Alternatively, steps of theworkflow can be performed solely by audio determination function 70.FIG. 6 depicts an exemplary view of a basic map depicting an environmentin which the embodiment of FIG. 5 functions, in accordance with anembodiment of the present invention. FIG. 6 will be discussed inconjunction with the corresponding parts of FIG. 5.

In an embodiment, initially, a user of client computing device 20activates navigation program 60. In an embodiment, navigation program 60is activated by the user powering on client computing device 20. Inanother embodiment, navigation program 60 is activated by the useropening navigation program 60 on client computer device 20 via a userinterface (not shown).

In an embodiment, upon activation, navigation program 60 determines theinitial location of client computing device 20 by calling API 40 toreceive the location of client computing device 20.

In step 520, navigation program 60 determines a route from the initiallocation of client computing device 20 to a destination. In anembodiment, navigation program 60 receives an address from the user thatthe user wants navigation program 60 to locate and determine anavigational route for. Navigation program 60 determines the route byusing algorithms and waypoints stored in storage 50. For example, theuser lives in Albany, N.Y. and inputs an address that is located inSyracuse, N.Y. Navigation program 60 determines a navigational routefrom the initial location of client computing device 20 in Albany, N.Y.to the inputted address that is located in Syracuse, N.Y.

In step 530, audio determination function 70 prompts the user to selecta degree range relative to the inputted destination. In an embodiment,audio determination function 70 prompts the user to select a degreerange that the user wants client computing device 20 to remain within,relative to the inputted destination, without audio guidance. Forexample, audio determination function 70 receives input from the userfor audio determination function 70 to provide audio guidance for theuser if client computing device 20 is in a location that is more than 45degrees from either side of a central line established from the previouslocation to the inputted destination.

In an embodiment, the degree range is measured from a central line. Thecentral line is a straight line (180 degrees) that is established from aprevious location of client computing device 20 to the inputteddestination, with the previous location and the inputted destination asendpoints of the central line. In an embodiment, the central linebisects the inputted degree range measurement. For example, audiodetermination function 70 receives input from the user that the userwants audio determination function 70 to provide audio guidance ifclient computing device 20 is in a location that is more than 45 degreesfrom either side of a central line established from the previouslocation to the inputted destination. For example, in FIG. 6, centralline 615 is established between initial location 605 and destination610. Initial location 605 and destination 610 are endpoints of centralline 615. Angle 620 is 90 degrees. Central line 615 bisects angle 620.Audio determination function 70 does not provide audio guidance ifclient computing device 20 is in a location that is not more than 45degrees from either side of central line 615.

In an embodiment, the position of the central line varies. The centralline is relative to the previous location of client computing device 20and the inputted destination. As client computing device 20 travels, thecentral line moves with client computing device 20. In FIG. 6, forexample, client computing device 20 travels from initial location 605 tolocation 630. Central line 635 is established as the new central line.Location 630 and destination 610 are endpoints of central line 635.Angle 640 is 90 degrees.

In an embodiment, the position of the central line varies at certainintervals. For example, the central line may be moved after a certaintime period, a certain distance traveled, etc. In an embodiment, audiodetermination function 70 monitors client computing device 20, vianavigation program 60, by intermittently (e.g. intervals of time ordistance) determining the current geographic location of clientcomputing device 20. For example, navigation program 60 determines thecurrent location of client computing device 20 every 15 seconds. Inanother example, navigation program 60 determines the location of clientcomputing device 20 every half mile. In an embodiment, the time ordistance interval is a default setting. In other embodiments, the timeor distance interval is inputted by the user.

In determination step 540, audio determination function 70 determines ifclient computing device 20 traveled to a location that is outside of theinputted degree range from either side of a central line establishedfrom the previous location to the inputted destination. In anembodiment, audio determination function 70 determines if clientcomputing device 20 traveled to a location that is outside of theinputted degree range from either side of a central line establishedfrom the previous location to the inputted destination by continuallymonitoring the current geographic location of client computing device 20compared to the previous geographic location of client computing device20, via navigation program 60. In FIG. 6, for example, audiodetermination function 70, via navigation program 60, determines iflocation 630 (current location of client computing device 20) is outsidethe degree range of angle 620 from either side of central line 615established from initial location 605 (previous location) to destination610.

If audio determination function 70 determines client computing device 20has not traveled to a location that is outside the inputted degree rangefrom either side of a central line established from the previouslocation to the inputted destination, processing proceeds down the “No”branch back to determination step 540. The process continues untilclient computing device 20 travels to a location that is outside theinputted degree range or has reached the destination. For example, inFIG. 6, location 630 (current location of client computing device 20) isnot outside of the degree range of angle 620 from either side of centralline 615 established from initial location 605 (previous location) todestination 610.

If audio determination function 70 determines client computing device 20has traveled to a location that is outside of the inputted degree rangefrom either side of a central line established from the previouslocation to the inputted destination, processing proceeds down the “Yes”branch to step 550. In step 550, audio determination function 70provides audio guidance. In an embodiment, audio determination function70 provides the user with audio guidance, via navigation program 60,when client computing device 20 travels to a location that is outsidethe inputted degree range from either side of a central line establishedfrom the previous location to the inputted destination.

In an embodiment, audio guidance may be a verbal alert to inform theuser that client computing device 20 is at a location that is outside ofthe inputted degree range from either side of a central line establishedfrom the previous location to the inputted destination, audibledirections to re-route the user, or a combination. In anotherembodiment, audio determination function 70 provides audio guidance inconjunction with a visual prompt. The visual prompt may be in the formof a heads-up (or head-up) display (HUD) or other technology thatdisplays a visualization for the user.

In determination step 560, audio determination function 70 determines ifclient computing device 20 traveled to a location that is outside theinputted degree range from either side of a central line establishedfrom the previous location to the inputted destination again using a newcentral line determined after a certain interval. In an embodiment,audio determination function 70 completes processing similar toprocessing in determination step 540.

If audio determination function 70 determines client computing device 20has traveled to a location that is outside of the inputted degree rangefrom either side of a central line established from the previouslocation to the inputted destination again, processing proceeds down the“Yes” branch back to step 550.

If audio determination function 70 determines client computing device 20has not traveled to a location that is outside of the inputted degreerange from either side of a central line established from the previouslocation to the inputted destination for the remainder of the trip,processing proceeds down the “No” branch and processing ends.

In an alternative embodiment, audio determination function 70 does notprovide audio guidance provided client computing device 20 is travelingcloser to the inputted destination. For example, audio determinationfunction 70 does not provide audio guidance if the estimated time ofarrival is shorter than the prior location of client computing device20. In another embodiment, audio determination function 70 does notprovide audio guidance if client computing device is traveling in thedirection of the inputted destination. For example, the inputteddestination is located northwest of the initial location of clientcomputing device 20. Audio determination function 70 does not provideaudio guidance provided client computing device 20 is traveling north,west, or northwest.

FIG. 6 depicts an exemplary view of a basic map depicting an environmentin which the embodiment of FIG. 5 functions, in accordance with anembodiment of the present invention. The depiction is a simple map. Inthe depicted embodiment, initial location 605 and destination 610 areendpoints of central line 615. Central line 615 is a straight line (180degrees) that bisects angle 620. Angle 620 is 90 degrees. Each half ofangle 620, relative to central line 615, is 45 degrees. Location 630 isthe location client computing device 20 traveled to from initiallocation 605. Central line 635 is the central line for location 630.Angle 640 is 90 degrees. Central line 635 bisects angle 640. Each halfof angle 640, relative to central line 635, is 45 degrees.

FIG. 7 is a flowchart depicting operational steps 700 of navigationprogram 60 executing within the computing environment of FIG. 1, inaccordance with yet another embodiment of the present invention.Navigation program 60 operates to selectively provide audio guidance toa user based on the compass direction that client computing device 20 istraveling. In an embodiment, the steps of the workflow are performed bynavigation program 60 utilizing audio determination function 70.Alternatively, steps of the workflow can be performed by another programthat is working with navigation program 60. Alternatively, steps of theworkflow can be performed solely by audio determination function 70.FIG. 8 depicts an exemplary view of a basic map depicting an environmentin which the embodiment of FIG. 7 functions, in accordance with anembodiment of the present invention. FIG. 8 will be discussed inconjunction with the corresponding parts of FIG. 7.

In an embodiment, initially, a user of client computing device 20activates navigation program 60. In an embodiment, navigation program 60is activated by the user powering on client computing device 20. Inanother embodiment, navigation program 60 is activated by the useropening navigation program 60 on client computer device 20 via a userinterface (not shown).

In an embodiment, upon activation, navigation program 60 determines theinitial location of client computing device 20 by calling API 40 toreceive the location of client computing device 20.

In step 720, navigation program 60 determines a route from the initiallocation of client computing device 20 to a destination. In anembodiment, navigation program 60 receives an address from the user thatthe user wants navigation program 60 to locate and determine anavigational route for. Navigation program 60 determines the route byusing algorithms and waypoints stored in storage 50. For example, theuser lives in Albany, N.Y. and inputs an address that is located inSyracuse, N.Y. Navigation program 60 determines a navigational routefrom the initial location of client computing device 20 in Albany, N.Y.to the inputted address that is located in Syracuse, N.Y.

In step 730, audio determination function 70 prompts the user to selecta degree range relative to the central line. In an embodiment, audiodetermination function 70 prompts the user to select a degree range thatthe user wants the compass direction of client computing device 20 toremain within relative to the central line established from the initiallocation to the inputted destination. For example, audio determinationfunction 70 receives input from the user for audio determinationfunction 70 to provide audio guidance for the user if the compassdirection of client computing device 20 is pointed in a direction at anangle that is outside of the inputted degree range of 90 degrees.

In an embodiment, the degree range is measured from a central line. Thecentral line is a straight line (180 degrees) that is established fromthe initial location of client computing device 20 to the inputteddestination, with the initial location and the inputted destination asendpoints of the central line. In an embodiment, the central linebisects the inputted degree range measurement. For example, audiodetermination function 70 receives input from the user that the userwants audio determination function 70 to provide audio guidance if thecompass direction that client computing device 20 is pointed in acompass direction that is at an angle that is outside of a 90 degreerange.

For example, in FIG. 8, initial location 805 and destination 810 areendpoints of central line 820. Central line 820 bisects angle 830. Angle830 is 90 degrees. Audio determination function 70 does not provideaudio guidance to the user if client computing device 20 is traveling ina compass direction that is 45 degrees of either side of central line820, in a direction going toward the destination. In an embodiment, theinputted degree range moves along the central line. For example, thedegree range remains relative to central line 820 and moves as clientcomputing device 20 travels. If client computing device 20 is travelingin a compass direction that is at an angle that is within the degreerange from the central line, audio guidance is not provided.

In an embodiment, the angle measurement used to determine whether clientcomputing device 20 is traveling at an angle that is outside of theinputted degree range is the angle between the direction of travel andthe central line, going toward the destination. The direction of travelis a line that extends in the direction client computing device 20 istraveling or facing from the current location of client computing device20. The line of the direction of travel also extends to the centralline. The angle between the direction of travel and the central line,going toward the destination, is the angle at which client computingdevice 20 is traveling relative to the destination and the central line.

For example, audio determination function 70 receives input from theuser to provide audio guidance if client computing device 20 travels ina compass direction that is at an angle that is outside of a 90 degreerange. In FIG. 8, at location 885, client computing device 20 istraveling in a compass direction that is west of central line 820. Thedirection of travel, of client computing device 20 from location 885,extends to central line 820. Angle 860, between the direction of travelat location 885 and central line 820, going toward the destination, is45 degrees.

In step 740, audio determination function 70 determines a boundary. Inan embodiment, audio determination function 70 determines the boundarybased on the initial location, the inputted destination, and theinputted degree range. If client computing device 20 crosses theboundary, audio determination function 70 provides audio guidance. In anembodiment, the boundary prevents client computing device 20 from goingin a direction that is going away from the inputted destination. In FIG.8, for example, audio determination function 70 received input from theuser that the user wants the compass direction of client computingdevice 20 to remain within a 90 degree range of central line 820. Basedon the degree range, client computing device 20 can have a compassdirection that is at an angle that is within 45 degrees of either sideof central line 820, going toward destination 810. Angle 860 is 45degrees. Angle 860 is the angle at which the compass direction of clientcomputing device 20 is pointed at location 885 and at location 855. Atlocation 885, client computing device 20 is traveling within theboundary and the inputted degree range. Audio determination function 70does not provide audio guidance for the user at location 885. Atlocation 855, audio determination function 70 provides the user withaudio guidance. Although client computing device 20 has a compassdirection that is pointed at an angle within the inputted degree range,client computing device 20 is traveling outside of the boundary,therefore traveling in a direction that is going away from destination810. Audio determination function 70 provides the user with audioguidance when client computing device 20 is at location 855.

In an embodiment, the boundary spans the width and the height of thecentral line, taking into account the inputted degree range. Theboundary prevents client computing device 20 from traveling away fromthe destination, even if client computing device 20 is within theinputted degree range. In FIG. 8, for example, audio determinationfunction 70 receives input from the user to provide audio guidance ifclient computing device 20 has a compass direction that is pointed at anangle that is outside of a 90 degree range on the determined route.Central line 820 is established between initial location 805 anddestination 810. The width between initial location 805 and destination810 is the width of the boundary. The height between initial location805 and destination 810 is the height of the boundary. Boundary 815takes into account the inputted degree range. Angle 830 at initiallocation is 90 degrees, 45 degrees on each side of central line 820 ascentral line 820 bisects angle 830.

In determination step 750, audio determination function 70 determines ifclient computing device 20 is within the boundary. Audio determinationfunction 70 determines if client computing device 20 is within theboundary based on analyzing the data that navigation program 60periodically collects from calling location API 40 of client computingdevice 20. The data includes, but is not limited to, information such asthe geographic location of client computing device 20 at a moment intime. If the current geographic location of client computing device 20is outside of the perimeter of the boundary, audio determinationfunction 70 determines that client computing device 20 is not within theboundary. In FIG. 8, for example, at location 855, audio determinationfunction 70 provides the user with audio guidance. Although clientcomputing device 20 has a compass direction that is at an angle withinthe inputted degree range, client computing device 20 is travelingoutside of the boundary, therefore traveling in a direction that isgoing away from destination 810. Audio determination function 70provides the user with audio guidance when client computing device 20 isat location 855.

If audio determination function 70 determines client computing device 20is outside of the boundary, processing proceeds down the “No” branch tostep 770. In step 770, audio determination function 70 provides audioguidance.

If audio determination function 70 determines that client computingdevice 20 is inside of the boundary, processing proceeds down the “Yes”branch to determination step 760.

In determination step 760, audio determination function 70 determineswhether client computing device 20 is traveling (or pointed) in acompass direction that is within the selected degree range. In anembodiment, audio determination function 70 determines whether clientcomputing device 20 is traveling in a compass direction that is withinthe selected degree range by using data from navigation program 60 todetermine the direction client computing device 20 is facing and bymeasuring the angle that is formed at the intersection of the centraland the extended line of the direction of travel. In FIG. 8, forexample, at location 865, angle 870 is the angle at which the compassdirection of client computing device 20 meets central line 820. Audiodetermination function 70 determines client computing device is nottraveling in a compass direction that is within the degree range sinceangle 870, at 140 degrees, exceeds the inputted degree range and clientcomputing device 20 is traveling northeast of destination 810, which issouthwest of client computing device 20. Although the direction oftravel of client computing device 20 is pointing northeast, the line ofthe direction of travel extends back to central line 820 to measure theangle client computing device 20 is traveling relative to central line820. Since angle 870 exceeds the inputted degree range, audiodetermination function 70 provides audio guidance. At location 875,angle 880 is the angle at which the compass direction of clientcomputing device 20 meets central line 820. Angle 880 is 25 degrees fromcentral line 820. To calculate the measure of angle 880, central line820 and the direction of travel line are extended until they intersect,since the angle is formed beyond boundary 815. Since client computingdevice 20 is traveling in a compass direction that is within theinputted degree range, audio determination function 70 does not provideaudio guidance.

If audio determination function 70 determines client computing device 20is not traveling in a compass direction within the inputted degreerange, processing proceeds down the “No” branch to step 770.

If audio determination function 70 determines client computing device 70is traveling in a compass direction that is within the inputted degreerange, proceeding proceeds down the “Yes” branch to back todetermination step 750.

In step 770, audio determination function 70 provides audio guidance.Audio determination function 70 provides the user with audio guidancevia navigation program 60. Audio guidance is provided until clientcomputing device 20 is traveling within the boundary in a compassdirection that is within the inputted degree range or until clientcomputing device 20 arrives at the destination. If client computingdevice 20 has not reached the destination and no longer needs audioguidance, processing continues back to determination step 750.Processing ends when client computing device 20 reaches the destination.

FIG. 8 depicts an exemplary view of a basic map depicting an environmentin which the embodiment of FIG. 7 functions, in accordance with anembodiment of the present invention. The depiction is a basic map viewof the inputted degree range of client computing device 20 relative tothe central line. In an embodiment, initial location 805 and destination810 are endpoints of central line 820. Central line 820 is a straightline (180 degrees) that bisects angle 830. Angle 830 is 90 degrees. Eachhalf of angle 830, relative to central line 820, is 45 degrees. Boundary815 is the boundary for the degree range that client computing device 20is to stay within. Line 825 is parallel to central line 820. Clientcomputing device at location 835 and location 840 has a compassdirection pointing 180 degrees away from destination 810. Clientcomputing device 20 at location 845 and location 850 has a compassdirection pointed at an angle that is zero degrees to destination 810.At location 885 and location 855, client computing device 20 istraveling at an angle that is 45 degrees of central line 820. Angle 860is 45 degrees. At location 865, client computing device 20 is travelingat an angle that is 140 degrees of central line 820. Angle 870 is 140degrees. At location 875, client computing device 20 is traveling at anangle that is 25 degrees of central line 820. Angle 880 is 25 degrees.

FIG. 9 depicts a block diagram of components of client computing device20, in accordance with an embodiment of the present invention. It shouldbe appreciated that FIG. 9 provides only an illustration of oneimplementation and does not imply any limitations with regard to theenvironments in which different embodiments may be implemented. Manymodifications to the depicted environment may be made.

Client computing device 20 may include communications fabric 902, whichprovides communications between cache 916, memory 906, persistentstorage 908, communications unit 910, and input/output (I/O)interface(s) 912. Communications fabric 902 can be implemented with anyarchitecture designed for passing data and/or control informationbetween processors (such as microprocessors, communications and networkprocessors, etc.), system memory, peripheral devices, and any otherhardware components within a system. For example, communications fabric902 can be implemented with one or more buses or a crossbar switch.

Memory 906 and persistent storage 908 are computer readable storagemedia. In this embodiment, memory 906 includes random access memory(RAM). In general, memory 906 can include any suitable volatile ornon-volatile computer readable storage media. Cache 916 is a fast memorythat enhances the performance of computer processor(s) 904 by holdingrecently accessed data, and data near accessed data, from memory 906.

Location API 40, storage 50, navigation program 60, and audiodetermination function 70 may each be stored in persistent storage 908of client computing device 20 and in memory 906 of client computingdevice 20 for execution by one or more of the respective computerprocessors 904 via cache 916. In an embodiment, persistent storage 908includes a magnetic hard disk drive. Alternatively, or in addition to amagnetic hard disk drive, persistent storage 908 can include a solidstate hard drive, a semiconductor storage device, read-only memory(ROM), erasable programmable read-only memory (EPROM), flash memory, orany other computer readable storage media that is capable of storingprogram instructions or digital information.

The media used by persistent storage 908 may also be removable. Forexample, a removable hard drive may be used for persistent storage 908.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer readable storage medium that is also part of persistent storage908.

Communications unit 910, in these examples, provides for communicationswith other data processing systems or devices. In these examples,communications unit 910 includes one or more network interface cards.Communications unit 910 may provide communications through the use ofeither or both physical and wireless communications links. Location API40, storage 50, navigation program 60, and audio determination function70 may be downloaded to persistent storage 908 of client computingdevice 20 through communications unit 910 of client computing device 20.

I/O interface(s) 912 allows for input and output of data with otherdevices that may be connected to client computing device 20. Forexample, I/O interface 912 may provide a connection to external devices918 such as a keyboard, keypad, a touch screen, and/or some othersuitable input device. External devices 918 can also include portablecomputer readable storage media such as, for example, thumb drives,portable optical or magnetic disks, and memory cards. Software and dataused to practice embodiments of the present invention, e.g., locationAPI 40, storage 50, navigation program 60, and audio determinationfunction 70, can be stored on such portable computer readable storagemedia and can be loaded onto persistent storage 908 of client computingdevice 20 via I/O interface(s) 912 of client computing device 20. I/Ointerface(s) 912 also connect to a display 920.

Display 920 provides a mechanism to display data to a user and may be,for example, a computer monitor.

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of theinvention. However, it should be appreciated that any particular programnomenclature herein is used merely for convenience, and thus theinvention should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the invention.The terminology used herein was chosen to best explain the principles ofthe embodiment, the practical application or technical improvement overtechnologies found in the marketplace, or to enable others of ordinaryskill in the art to understand the embodiments disclosed herein.

What is claimed is:
 1. A method for disabling audio guidance in areasfamiliar to a user, the method comprising: determining, by one or moreprocessors, a route of a computing device; determining, by one or moreprocessors, one or more previously traveled routes by a user;determining, by one or more processors, whether the route is the same asany portion of the one or more previously traveled routes by the user;and providing, by one or more processors, audio guidance to the user forany portion of the route that was determined to not be the same as anyportion of the one or more previously traveled routes by the user. 2.The method of claim 1, further comprising: transmitting, by one or moreprocessors, the determined route to the user; receiving, by one or moreprocessors, an indication from the user, wherein the indication includesone or more non audio portions of the route that the user does not wantto receive audio guidance; and wherein the step of providing, by one ormore processors, audio guidance to the user for any portion of the routethat was determined to not be the same as any portion of the one or morepreviously traveled routes by the user comprises: providing, by one ormore processors, audio guidance to the user for any portion of the routethat was determined to not be the same as any portion of the one or morepreviously traveled routes by the user and not included in the non audioportion of the route.
 3. The method of claim 1, wherein the step ofdetermining, by one or more processors, whether the route is the same asany portion of the one or more previously traveled routes by the usercomprises: determining, by one or more computer processors, whether anumber of travel times of the one or more previously traveled routes bythe user are above a threshold; and wherein the step of providing, byone or more processors, audio guidance to the user for any portion ofthe route that was determined to not be the same as any portion of theone or more previously traveled routes by the user comprises: responsiveto determining the number of travel times is above the threshold,providing, by one or more processors, audio guidance to the user for anyportion of the route that was determined to not be the same as anyportion of the one or more previously traveled routes by the user. 4.The method of claim 1, wherein the step of determining, by one or moreprocessors, whether the route is the same as any portion of the one ormore previously traveled routes by the user comprises: determining, byone or more computer processors, whether a number of travel times of theone or more previously traveled routes by the user are above athreshold; and wherein the step of providing, by one or more processors,audio guidance to the user for any portion of the route that wasdetermined to not be the same as any portion of the one or morepreviously traveled routes by the user comprises: responsive todetermining the number of travel times is below the threshold, providingby one or more processors, audio guidance to the user for the route. 5.The method of claim 3, wherein the threshold is received from the user.6. The method of claim 1, further comprising: determining, by one ormore processors, the user has reached a destination; and ending, by oneor more processors, audio guidance.
 7. A computer program product fordisabling audio guidance in areas familiar to a user, the computerprogram product comprising: one or more computer readable storage media;and program instructions stored on the one or more computer readablestorage media, the program instructions comprising: program instructionsto determine a route of a computing device; program instructions todetermining one or more previously traveled routes by a user; programinstructions to determine whether the route is the same as any portionof the one or more previously traveled routes by the user; and programinstructions to provide whether to provide audio guidance to the userfor any portion of the route that was determined to not be the same asany portion of the one or more previously traveled routes by the user.8. The computer program product of claim 7, further comprising programinstructions, stored on the one or more computer readable storage media,to: transmit the determined route to the user; receive an indicationfrom the user, wherein the indication includes one or more non audioportions of the route that the user does not want to receive audioguidance; and wherein the program instructions to provide audio guidanceto the user for any portion of the route that was determined to not bethe same as any portion of the one or more previously traveled routes bythe user comprises: provide audio guidance to the user for any portionof the route that was determined to not be the same as any portion ofthe one or more previously traveled routes by the user and not includedin the non audio portion of the route.
 9. The computer program productof claim 7, wherein program instructions to determine whether the routeis the same as any portion of the one or more previously traveled routesby the user comprises: program instructions to determine whether anumber of travel times of the one or more previously traveled routes bythe user are above a threshold; and wherein program instructions toprovide audio guidance to the user for any portion of the route that wasdetermined to not be the same as any portion of the one or morepreviously traveled routes by the user comprises: program instructions,responsive to determining the number of travel times is above thethreshold, to provide audio guidance to the user for any portion of theroute that was determined to not be the same as any portion of the oneor more previously traveled routes by the user.
 10. The computer programproduct of claim 7, wherein program instructions to determine whetherthe route is the same as any portion of the one or more previouslytraveled routes by the user comprises: program instructions to determinewhether a number of travel times of the one or more previously traveledroutes by the user are above a threshold; and wherein programinstructions to provide audio guidance to the user for any portion ofthe route that was determined to not be the same as any portion of theone or more previously traveled routes by the user comprises: programinstructions, responsive to determining the number of travel times isbelow the threshold, to provide audio guidance to the user for theroute.
 11. The computer program product of claim 9, wherein thethreshold is received from the user.
 12. The computer program product ofclaim 7, further comprising program instructions, stored on the one ormore computer readable storage media, to: determine the user has reacheda destination; and ending audio guidance.
 13. A computer system fordisabling audio guidance in areas familiar to a user, the computersystem comprising: one or more computer processors; one or more computerreadable storage media; and program instructions, stored on the computerreadable storage media for execution by at least one of the one or moreprocessors, the program instructions comprising: program instructions todetermine a route of a computing device; program instructions todetermining one or more previously traveled routes by a user; programinstructions to determine whether the route is the same as any portionof the one or more previously traveled routes by the user; and programinstructions to provide whether to provide audio guidance to the userfor any portion of the route that was determined to not be the same asany portion of the one or more previously traveled routes by the user.14. The computer system of claim 13, further comprising programinstructions, stored on the computer readable storage media forexecution by at least one of the one or more processors, to: transmitthe determined route to the user; receive an indication from the user,wherein the indication includes one or more non audio portions of theroute that the user does not want to receive audio guidance; and whereinthe program instructions to provide audio guidance to the user for anyportion of the route that was determined to not be the same as anyportion of the one or more previously traveled routes by the usercomprises: provide audio guidance to the user for any portion of theroute that was determined to not be the same as any portion of the oneor more previously traveled routes by the user and not included in thenon audio portion of the route.
 15. The computer system of claim 13,wherein program instructions to determine whether the route is the sameas any portion of the one or more previously traveled routes by the usercomprises: program instructions to determine whether a number of traveltimes of the one or more previously traveled routes by the user areabove a threshold; and wherein program instructions to provide audioguidance to the user for any portion of the route that was determined tonot be the same as any portion of the one or more previously traveledroutes by the user comprises: program instructions, responsive todetermining the number of travel times is above the threshold, toprovide audio guidance to the user for any portion of the route that wasdetermined to not be the same as any portion of the one or morepreviously traveled routes by the user.
 16. The computer system of claim13, wherein program instructions to determine whether the route is thesame as any portion of the one or more previously traveled routes by theuser comprises: program instructions to determine whether a number oftravel times of the one or more previously traveled routes by the userare above a threshold; and wherein program instructions to provide audioguidance to the user for any portion of the route that was determined tonot be the same as any portion of the one or more previously traveledroutes by the user comprises: program instructions, responsive todetermining the number of travel times is below the threshold, toprovide audio guidance to the user for the route.
 17. The computersystem of claim 15, wherein the threshold is received from the user. 18.The computer system of claim 13, further comprising programinstructions, stored on the computer readable storage media forexecution by at least one of the one or more processors, to: determinethe user has reached a destination; and ending audio guidance.